package com.fowo.api.model.supplier.invoice.order;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * 供应商发货单 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class SupplierInvoiceOrderImportPo {

  /** 单号 */
  @ExcelProperty("*单号")
  @NotBlank(message = "单号不能为空")
  private String supplierInvoiceOrder;

  /** 供应商编号 */
  @ExcelProperty("*供应商编号")
  @NotBlank(message = "供应商编号不能为空")
  @Size(max = 200, message = "供应商编号长度不能超过200")
  private String supplierId;

  /** 供应商名称 */
  @ExcelProperty("供应商名称")
  @Size(max = 200, message = "供应商名称长度不能超过200")
  private String supplierName;

  /** 采购单号 */
  @ExcelProperty("*采购单号")
  @NotBlank(message = "采购单号不能为空")
  @Size(max = 50, message = "采购单号长度不能超过50")
  private String purchaseOrderCode;

  /** 发货单号 */
  @ExcelProperty("发货单号")
  @Size(max = 50, message = "发货单号长度不能超过50")
  private String inoviceCode;

  /** 运输方式 */
  @ExcelProperty("运输方式")
  @EnumsString(
    value = { "快递", "海运", "空运", "其他" },
    message = "运输方式只能是“快递”, “海运”, “空运”, “其他”中的一个"
  )
  private String transportMode;

  /** 物流商 */
  @ExcelProperty("物流商")
  @Size(max = 50, message = "物流商长度不能超过50")
  private String logisticsProvider;

  /** 物流商单号 */
  @ExcelProperty("物流商单号")
  @Size(max = 50, message = "物流商单号长度不能超过50")
  private String logisticsTrackingNumber;

  /** 物流渠道 */
  @ExcelProperty("物流渠道")
  @Size(max = 50, message = "物流渠道长度不能超过50")
  private String logisticsChannel;

  /** 物流信息 */
  @ExcelProperty("物流信息")
  @Size(max = 50, message = "物流信息长度不能超过50")
  private String logisticsInfo;

  /** 预计到货时间 */
  @ExcelProperty("预计到货时间")
  @DateString(message = "预计到货时间不是有效的日期格式")
  private String expectReachTime;

  /** 实际发货时间 */
  @ExcelProperty("实际发货时间")
  @DateString(message = "实际发货时间不是有效的日期格式")
  private String realitySendTime;

  /** 物流中心编码 */
  @ExcelProperty("物流中心编码")
  @Size(max = 50, message = "物流中心编码长度不能超过50")
  private String logisticsCenterCode;

  /** 发货状态 */
  @ExcelProperty("发货状态")
  private String invoiceStatus;

  /** 物流状态 */
  @ExcelProperty("物流状态")
  @Size(max = 50, message = "物流状态长度不能超过50")
  private String logisticsStatus;

  /** 负责人 */
  @ExcelProperty("负责人")
  @Size(max = 50, message = "负责人长度不能超过50")
  private String principal;

  /** 创建人 */
  @ExcelProperty("创建人")
  @Size(max = 50, message = "创建人长度不能超过50")
  private String lxCreateUser;

  /** 物流预计时效 */
  @ExcelProperty("物流预计时效")
  @IntegerString(
    message = "物流预计时效数值格式不正确",
    label = "物流预计时效",
    min = 0
  )
  private String logisticsExpectedAging;

  /** 分摊方式 */
  @ExcelProperty("分摊方式")
  private String allocationType;

  /** 备注 */
  @ExcelProperty("备注")
  @Size(max = 50, message = "备注长度不能超过50")
  private String remark;
}
